package com.ztgf.user.api.cms;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.ztgf.common.constant.Result;
import com.ztgf.common.enums.CodeEnum;
import com.ztgf.common.utils.StrUtils;
import com.ztgf.user.models.vo.UserInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.ztgf.user.models.service.IUserInfoService;
import com.ztgf.user.models.bo.UserInfoSaveBO;
import com.ztgf.user.models.bo.UserInfoBO;
import com.ztgf.user.models.dto.UserInfoDTO;

/**
 * 用户基本信息控制器
 *
 * @author zhanghualang
 * @Date 2020-05-28 17:43:46
 */

@RestController
@RequestMapping("/cms/userInfo")
@Slf4j
@Api(value = "UserInfoController",tags = "用户基本信息接口")
public class UserInfoController {

    @DubboReference
    private IUserInfoService userInfoService;

    @PostMapping("/getVoByName")
    @ApiOperation(value = "根据公司名称查找",notes = "根据公司名称查找")
    @ApiImplicitParam(name = "id",value = "id",required = true,paramType = "query", dataType = "Long")
    public Result<UserInfoVO> getVoByName(@RequestParam("name") String name){
        if(name == null || "".equals(name)){
            return new Result<>(CodeEnum.FAIL_100002 );
        }

        UserInfoVO vo = userInfoService.getVoByName(name);
        if (vo == null || vo.getId() == null){
            return new Result<>(CodeEnum.FAIL_Login_1001);
        }

        return new Result<>(vo);
    }

//    @ApiOperation(value = "添加用户基本信息",notes = "添加用户基本信息")
//    @PostMapping(value = "/insert")
//    public Result insert(UserInfoSaveBO saveBO) {
//        boolean flag = userInfoService.add(saveBO);
//        if (flag){
//            return new Result<>();
//        } else {
//            return new Result<>(CodeEnum.FAIL_100007);
//        }
//    }
//
//    @ApiOperation(value = "修改用户基本信息",notes = "修改用户基本信息")
//    @PostMapping("/update")
//    public Result update(UserInfoSaveBO saveBO){
//        UserInfoDTO dto = new UserInfoDTO();
//        BeanUtils.copyProperties(saveBO, dto);
//        dto.setId(saveBO.getId());
//        boolean flag = userInfoService.updateById(dto);
//        if (flag){
//            return new Result<>();
//        } else {
//            return new Result<>(CodeEnum.FAIL_100008);
//        }
//    }
//
//    @PostMapping("/updateStatus")
//    @ApiOperation(value = "修改状态",notes = "修改状态")
//     @ApiImplicitParams({
//             @ApiImplicitParam(name = "id",value = "id",required = true,paramType = "query", dataType = "Long")
//             ,@ApiImplicitParam(name = "status",value = "状态 0创建、1重填资料、2已审核、3审核拒绝、4冻结、5删除",required = true,paramType = "query", dataType = "Integer")
//     })
//     public Result updateStatus(Long id, Integer status){
//         UserInfoDTO dto = new UserInfoDTO();
//         dto.setId(id);
//         dto.setStatus(status);
//        boolean flag = userInfoService.updateById(dto);
//         if(flag){
//             return new Result<>();
//         } else {
//             return new Result<>(CodeEnum.FAIL_100008);
//         }
//     }
//
//    @ApiOperation(value = "删除用户基本信息",notes = "删除用户基本信息")
//    @ApiImplicitParam(name = "id",value = "用户基本信息id",required = true,paramType = "query",dataType = "Long")
//    @PostMapping("/delete")
//    public Result delete(@RequestParam("id") Long id){
//        boolean flag = userInfoService.deleteById(id);
//        if (flag){
//            return new Result<>();
//        } else {
//            return new Result<>(CodeEnum.FAIL_100009);
//        }
//    }
//
//    @PostMapping("/deleteBatch")
//    @ApiOperation(value = "批量删除用户基本信息",notes = "批量删除用户基本信息")
//    @ApiImplicitParam(name = "ids",value = "ids:以逗号隔开",required = true,paramType = "query", dataType = "String")
//    public Result deleteBatch(@RequestParam("ids") String ids){
//        if(StrUtils.isEmpty(ids)){
//            return new Result(CodeEnum.FAIL_100002 );
//        }
//        String[] arr = ids.split(",");
//        userInfoService.deleteBatchIds(Arrays.asList(arr));
//        return new Result<>();
//    }
//
//    @PostMapping("/get")
//    @ApiOperation(value = "根据id查找",notes = "根据id查找")
//    @ApiImplicitParam(name = "id",value = "id",required = true,paramType = "query", dataType = "Long")
//    public Result<UserInfoDTO> get(@RequestParam("id") Long id){
//        if(id == null){
//            return new Result<>(CodeEnum.FAIL_100002 );
//        }
//
//        UserInfoDTO dto = userInfoService.selectById(id);
//
//        return new Result<>(dto);
//    }
//
//    @ApiOperation(value = "用户基本信息列表",notes = "用户基本信息列表")
//    @PostMapping("/queryPageList")
//    public Result<Page<UserInfoDTO>> queryPageList(UserInfoBO bo){
//        Wrapper<UserInfoDTO> wrapper = new EntityWrapper<>();
//
//                if (bo.getStatus() != null){
//                    wrapper.eq("status", bo.getStatus());
//                }
//
//        if (bo.getStartDate() != null){
//            wrapper.ge("create_time", bo.getStartDate());
//        }
//        if (bo.getEndDate() != null){
//            wrapper.le("create_time", bo.getEndDate());
//
//        }
//        Page<UserInfoDTO> page = new Page<>(bo.getPageNo(), bo.getPageSize());
//        page = userInfoService.selectPage(page, wrapper);
//
//        return new Result<>(page);
//    }
}
